
#include "nane/RenderSystem/d3d9/D3D9IndexBuffer.h"
#include "nane/core/assert.h"

namespace nane
{
    ////////////////////////////////////////////////////////////////////////////////////////////////
    D3D9IndexBuffer::D3D9IndexBuffer( IDirect3DIndexBuffer9* _pIB9, uint32 _indiciesNum )
        : m_pIB9( _pIB9 )
        , m_indiciesNum( _indiciesNum )
    {
        NANE_ASSERT( m_pIB9 != NULL, "IDirect3DVertexBuffer9 must be valid" );
    }
    ////////////////////////////////////////////////////////////////////////////////////////////////
    D3D9IndexBuffer::~D3D9IndexBuffer()
    {

    }
    ////////////////////////////////////////////////////////////////////////////////////////////////
    IDirect3DIndexBuffer9* D3D9IndexBuffer::GetInterface()
    {
        return m_pIB9;
    }
    ////////////////////////////////////////////////////////////////////////////////////////////////
    uint32 D3D9IndexBuffer::GetIndicesNum() const
    {
        return m_indiciesNum;
    }
    ////////////////////////////////////////////////////////////////////////////////////////////////
    uint16* D3D9IndexBuffer::Lock( uint32 _offset, uint32 _size )
    {
        uint16* data = NULL;
        HRESULT hr = m_pIB9->Lock(_offset, _size, reinterpret_cast<void**>(&data), 0);
        SUCCEEDED(hr);
        return data;
    }
    ////////////////////////////////////////////////////////////////////////////////////////////////
    void D3D9IndexBuffer::Unlock()
    {
        HRESULT hr = m_pIB9->Unlock();
        SUCCEEDED(hr);
    }
    ////////////////////////////////////////////////////////////////////////////////////////////////
}   // namespace nane

